App({
  onLaunch: function () {
    wx.getSystemInfo({
      success: (e) => {
        this.globalData.statusBar = e.statusBarHeight //状态栏高度
        let custom = wx.getMenuButtonBoundingClientRect() //菜单按钮
        this.globalData.custom = custom
        this.globalData.customBar =
          custom.bottom + custom.top - e.statusBarHeight
        //计算得到定义的状态栏高度
      },
    })
    // 自己封装的方法
    this._promiseifyWxApi()
  },
  // 封装api
  _promiseifyWxApi() {
    // 发送异步请求
    wx.requestAsync = function (params) {
      let { url, data, method, header } = params
      return new Promise((resolve, reject) => {
        wx.showLoading({
          title: '正在获取数据...',
        })
        // 对data进行 兼容：如果没有值，重置成空对象
        data = data || {}
        // 统一处理参数:
        // 1. 对参数中值为null undefined进行过滤
        // 2. 统一参数一些公共参数[接口可能是针对多端都使用的，所以需要在每个端调用接口时加上参数来区分]
        for (let prop in data) {
          if (data[prop] === undefined || data[prop] === null) {
            delete data[prop]
          }
        }
        // 对当前接口全部加上渠道标识 channel字段
        data.channel = 'miniapp'
        wx.request({
          // url: 'http://192.168.25.180:8888/api/public/v1/' + url,
          //   url: "https://uinav.com/api/public/v1" + url,
          method: method || 'GET',
          data,
          header,
          success: (res) => {
            // 网络正常返回，但是后台返回的数据未必是正常的
            // 200 204 206 301 302 304 305 400 404 403 405 500 501 502 503 504
            // 网络返回是正常 再看返回的接口业务状态码
            // if (res.statusCode == 200 && res.data && res.data.meta) {
            //   // 业务逻辑状态码也是正常的 200
            //   if (res.data.meta.status == 200) {
            //     resolve(res.data.message);
            //   } else if (res.data.meta.status === 404) {
            //     wx.showToast({
            //       title: "接口不存在",
            //       icon: "none",
            //     });
            //     reject(res);
            //   } else {
            //     reject(res);
            //   }
            // }
          },
          fail: (err) => {
            reject(err)
          },
          complete: () => {
            wx.hideLoading()
          },
        })
      })
    }
  },
  globalData: {},
})
